﻿using System;
using System.Windows.Forms;
using PMIS.BLL;
using PMIS.BLL.User;

namespace PMIS.UI.User
{
	/// <summary>
	///	取证管理
	/// </summary>
	public partial class 取证信息维护 : BaseForm
	{
		#region 私有变量
		/// <summary>
		/// 当前操作的记录
		/// </summary>
		private 取证 CurrentRecord = null;
		#endregion

		#region 单例
		/// <summary>
		/// 本类的实例
		/// </summary>
		private static 取证信息维护 _form = null;
		/// <summary>
		/// 用于本类实现单例的Locker
		/// </summary>
		private static object locker = new object();
		/// <summary>
		/// 构造函数
		/// </summary>
		private 取证信息维护()
		{
			InitializeComponent();
		}
		/// <summary>
		/// 获取本窗体的实例
		/// </summary>
		/// <param name="ID">记录ID</param>
		/// <param name="strUserID">用户ID</param>
		/// <returns></returns>
		public static 取证信息维护 GetInstance(string ID, string strUserID)
		{
			if (_form == null || _form.IsDisposed)
			{
				lock (locker)
				{
					if (_form == null || _form.IsDisposed)
						_form = new 取证信息维护();
				}
			}

			if (ID == "new")
			{
				_form.CurrentRecord = new 取证();
				_form.CurrentRecord.USER_ID = strUserID;
			}
			else
			{
				_form.CurrentRecord = Singleton<BL_取证>.GetInstance().GetEntity(ID);
			}

			return _form;
		}
		#endregion

		#region 窗体事件
		/// <summary>
		///	窗体载入事件
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void UserCertificateOperationForm_Load(object sender, EventArgs e)
		{
			UpdateFormView();
		}
		#endregion

		#region 界面显示
		/// <summary>
		/// 更新界面显示
		/// </summary>
		private void UpdateFormView()
		{
			if (CurrentRecord == null)
				return;

			try
			{
				//	现职称名称
				tb现职称名称.Text = CurrentRecord.现职称名称;
				//	现职称等级
				tb现职称等级.Text = CurrentRecord.现职称等级;
				//	现职业资格工种
				tb现职业资格工种.Text = CurrentRecord.现职业资格工种;
				//	现职业资格等级
				tb现职业资格等级.Text = CurrentRecord.现职业资格等级;
				//	现从业资格工种
				tb现从业资格工种.Text = CurrentRecord.现从业资格工种;
				//	现从业资格等级
				tb现从业资格等级.Text = CurrentRecord.现从业资格等级;
				//	现执业资格工种
				tb现执业资格工种.Text = CurrentRecord.现执业资格工种;
				//	现执业资格等级
				tb现执业资格等级.Text = CurrentRecord.现执业资格等级;
				//	特种作业证
				tb特种作业证.Text = CurrentRecord.特种作业证;
				//	专项证书
				tb专项证书.Text = CurrentRecord.专项证书;
				//	岗位培训证书
				tb岗位培训证书.Text = CurrentRecord.岗位培训证书;
				//	安全技能资格等级
				tb安全技能资格等级.Text = CurrentRecord.安全技能资格等级;
				//	三种人资格
				tb三种人资格.Text = CurrentRecord.三种人资格;
				//	安规考试成绩
				tb安规考试成绩.Text = CurrentRecord.安规考试成绩;
				//	备注
				tb备注.Text = CurrentRecord.备注;
			}
			catch (Exception ex)
			{
				ShowExceptionMessage(ex);
			}
		}
		#endregion

		#region 触发事件
		/// <summary>
		/// 检查输入
		/// </summary>
		/// <returns></returns>
		private bool CheckInput()
		{
			if (string.IsNullOrEmpty(tb现职称名称.Text.Trim()))
			{
				ShowErrorMessage("现职称名称不能为空!");
				tb现职称名称.Focus();
				return false;
			}

			if (string.IsNullOrEmpty(tb现职称等级.Text.Trim()))
			{
				ShowErrorMessage("现职称等级不能为空!");
				tb现职称等级.Focus();
				return false;
			}

			if (string.IsNullOrEmpty(tb现职业资格工种.Text.Trim()))
			{
				ShowErrorMessage("现职业资格工种不能为空!");
				tb现职业资格工种.Focus();
				return false;
			}

			if (string.IsNullOrEmpty(tb现职业资格等级.Text.Trim()))
			{
				ShowErrorMessage("现职业资格等级不能为空!");
				tb现职业资格等级.Focus();
				return false;
			}

			if (string.IsNullOrEmpty(tb现从业资格工种.Text.Trim()))
			{
				ShowErrorMessage("现从业资格工种不能为空!");
				tb现从业资格工种.Focus();
				return false;
			}

			if (string.IsNullOrEmpty(tb现从业资格等级.Text.Trim()))
			{
				ShowErrorMessage("现从业资格等级不能为空!");
				tb现从业资格等级.Focus();
				return false;
			}

			if (string.IsNullOrEmpty(tb现执业资格工种.Text.Trim()))
			{
				ShowErrorMessage("现执业资格工种不能为空!");
				tb现执业资格工种.Focus();
				return false;
			}

			if (string.IsNullOrEmpty(tb现执业资格等级.Text.Trim()))
			{
				ShowErrorMessage("现执业资格等级不能为空!");
				tb现执业资格等级.Focus();
				return false;
			}

			if (string.IsNullOrEmpty(tb特种作业证.Text.Trim()))
			{
				ShowErrorMessage("特种作业证不能为空!");
				tb特种作业证.Focus();
				return false;
			}

			if (string.IsNullOrEmpty(tb专项证书.Text.Trim()))
			{
				ShowErrorMessage("专项证书不能为空!");
				tb专项证书.Focus();
				return false;
			}

			if (string.IsNullOrEmpty(tb岗位培训证书.Text.Trim()))
			{
				ShowErrorMessage("岗位培训证书不能为空!");
				tb岗位培训证书.Focus();
				return false;
			}

			if (string.IsNullOrEmpty(tb安全技能资格等级.Text.Trim()))
			{
				ShowErrorMessage("安全技能资格等级不能为空!");
				tb安全技能资格等级.Focus();
				return false;
			}

			if (string.IsNullOrEmpty(tb三种人资格.Text.Trim()))
			{
				ShowErrorMessage("三种人资格不能为空!");
				tb三种人资格.Focus();
				return false;
			}

			if (string.IsNullOrEmpty(tb安规考试成绩.Text.Trim()))
			{
				ShowErrorMessage("安规考试成绩不能为空!");
				tb安规考试成绩.Focus();
				return false;
			}

			return true;
		}
		/// <summary>
		/// 保存
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void btSave_Click(object sender, EventArgs e)
		{
			if (!CheckInput())
				return;

			try
			{
				//	现职称名称
				CurrentRecord.现职称名称 = tb现职称名称.Text.Trim();
				//	现职称等级
				CurrentRecord.现职称等级 = tb现职称等级.Text.Trim();
				//	现职业资格工种
				CurrentRecord.现职业资格工种 = tb现职业资格工种.Text.Trim();
				//	现职业资格等级
				CurrentRecord.现职业资格等级 = tb现职业资格等级.Text.Trim();
				//	现从业资格工种
				CurrentRecord.现从业资格工种 = tb现从业资格工种.Text.Trim();
				//	现从业资格等级
				CurrentRecord.现从业资格等级 = tb现从业资格等级.Text.Trim();
				//	现执业资格工种
				CurrentRecord.现执业资格工种 = tb现执业资格工种.Text.Trim();
				//	现执业资格等级
				CurrentRecord.现执业资格等级 = tb现执业资格等级.Text.Trim();
				//	特种作业证
				CurrentRecord.特种作业证 = tb特种作业证.Text.Trim();
				//	专项证书
				CurrentRecord.专项证书 = tb专项证书.Text.Trim();
				//	岗位培训证书
				CurrentRecord.岗位培训证书 = tb岗位培训证书.Text.Trim();
				//	安全技能资格等级
				CurrentRecord.安全技能资格等级 = tb安全技能资格等级.Text.Trim();
				//	三种人资格
				CurrentRecord.三种人资格 = tb三种人资格.Text.Trim();
				//	安规考试成绩
				CurrentRecord.安规考试成绩 = tb安规考试成绩.Text.Trim();
				//	备注
				CurrentRecord.备注 = tb备注.Text.Trim();

				//	保存
				if (Singleton<BL_取证>.GetInstance().Save(CurrentRecord))
				{
					ShowSuccessMessage("保存成功!");
					DialogResult = DialogResult.OK;
					this.Close();
				}
				else
				{
					ShowErrorMessage("保存记录时发生错误!");
					DialogResult = DialogResult.Cancel;
				}
			}
			catch (Exception ex)
			{
				ShowExceptionMessage(ex);
			}
		}
		/// <summary>
		/// 取消
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void btCancel_Click(object sender, EventArgs e)
		{
			DialogResult = DialogResult.Cancel;
			this.Close();
		}
		#endregion
	}
}